/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rh.game;

import com.rh.game.chat.ChatImage;

import java.util.List;

/**
 *
 * @author Hayden
 */
public interface Character extends HasEquipment, GameObject {
    public static enum BodyPart  {
        HAND, BODY;
    }
    
    public static enum Gender  {
        MALE, FEMALE;
    }
    
    public static final Character NARRATOR = new SingleInstance();
    public static final Character NULL = new SingleInstance();
    public static final Character WEARER = new SingleInstance();
    
    static final class SingleInstance implements Character  {
        private SingleInstance()  { super(); }
        
        
        public String getID()  { return ""; }
        public String getName()  { return ""; }
        public Location getLocation()  { return Location.NULL; }
        public void setLocation(Location pLoc)  {  }
        public List<GameObject> getInventory()  { return GameObject.EMPTY_LIST; }
        public List<GameClothing> getWearing()  { return GameClothing.EMPTY_LIST; }
        public ChatImage getImage()  { return ChatImage.NULL; }
        public void addInventory(GameObject stuff)  {  }
        public void removeInventory(GameObject stuff)  {  }
        public List<MagicalEffect> getEffects()  { return MagicalEffect.EMPTY_LIST; }
        public Gender getGender()  { return Gender.FEMALE; }
        public void setGender(Gender g)  {  }
        public byte getGridID()  { return Grid.EMPTY; }
    }
    
    byte getGridID();
    String getID();
    String getName();
    Location getLocation();
    void addInventory(GameObject stuff);
    void removeInventory(GameObject stuff);
    Gender getGender();
    void setGender(Gender gender);
}
